#include <iostream>
using namespace std;
// g++ -o template_static template_static.cc -std=c++11
template <class T>
class A {
 private:
  static int count;

 public:
  A() { count++; }
  ~A() { count--; };
  A(A &) { count++; }
  static void PrintCount() { cout << count << endl; }
};

template <>
int A<int>::count = 0;
template <>
int A<double>::count = 1;
int main() {
  A<int> ia;
  A<double> da;
  ia.PrintCount();
  da.PrintCount();
  return 0;
}
// A<int> 和 A<double> 是两个不同的类。虽然它们都有静态成员变量
// count，但是显然，A<int> 的对象 ia 和 A<double> 的对象 da 不会共享一份 count。